import Recorder from 'np';

const recorderManager = uni.getRecorderManager();

let audioCtx = null; // 音频上下文对象
let analyser = null; // 分析器

// 开始录音
function startRecord() {
  recorderManager.onStart(() => {
    console.log('recorder start');
    audioCtx = uni.createAudioContext('myAudio'); // 替换为你的audio组件id
    audioCtx.setSrc(''); // 设置空src，防止直接播放
    audioCtx.play();
    analyser = audioCtx.createAnalyser();
    analyser.fftSize = 2048; // 设置FFT大小
  });

  recorderManager.onFrameRecorded((res) => {
    let data = new Uint8Array(res.buffer);
    // 在这里进行频率分析
    let frequency = getFrequency(data);
    console.log('Frequency:', frequency);
  });

  recorderManager.start({
    duration: 60000, // 最长录音时长（单位ms），超过后会自动停止录音
    sampleRate: 44100, // 采样率
    numberOfChannels: 1, // 录音通道数
    encodeBitRate: 96000, // 编码码率
    format: 'aac', // 音频格式
    frameSize: 50 // 指定帧大小，单位 KB
  });
}

// 获取频率的函数示例
function getFrequency(data) {
  let sum = 0;
  for (let i = 0; i < data.length; i++) {
    sum += data[i];
  }
  let average = sum / data.length;
  let frequency = average * (44100 / 2048); // 根据FFT大小和采样率计算频率
  return frequency;
}
